//显示图片(int)
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main()
{
	//打开lcd
	int lcd_fd;
	lcd_fd = open("/dev/fb0", O_RDWR);
	if(-1 == lcd_fd)
	{
		perror("open lcd failed!\n");
		return -1;
	}
	else
	{
		printf("open lcd success!\n");
	}
	//打开图片
	int bmp_fd;
	bmp_fd = open("./bbl.bmp", O_RDONLY);
	if(-1 == bmp_fd)
	{
		perror("open 1.bmp failed!\n");
		return -1;
	}
	
	//偏移54个字节，去掉头信息
	lseek(bmp_fd, 54, SEEK_SET);
	
	//定义图片像素数据缓冲区
	char bmp_buf[800*480*3];
	read(bmp_fd, bmp_buf, sizeof(bmp_buf));
	
	//讲24位bmp图片像素转换为32位
	int buf32[800*480];
	int i;
	for(i=0; i<800*480; i++)
	{
		buf32[i] = bmp_buf[0+i*3]<<0 | bmp_buf[1+i*3]<<8 | bmp_buf[2+i*3]<<16 | 0x00<<24;
	}
	
	//翻转图片
	int buffz[800*480];
	int x,y;
	for(y=0;y<480;y++)
	{
		for(x=0;x<800;x++)
		{
			buffz[800*y+x] = buf32[(479-y)*800+x];
		}
	}
	
	//讲颜色数据写入lcd
	write(lcd_fd, buffz, sizeof(buffz));
	//关闭lcd
	close(lcd_fd);
	close(bmp_fd);
	
	return 0;
}
